


if (!requireNamespace("corrplot", quietly = TRUE)) install.packages("corrplot")
if (!requireNamespace("Hmisc", quietly = TRUE)) install.packages("Hmisc")

library(corrplot)
library(Hmisc)#加载包




try({
  setwd("../722/批量相关性分析与相关性散点图/")
})
setwd("f://rproject/r-language/lilongyuan2/722/批量相关性分析与相关性散点图/")

# CTRP2 <- read.table("DrugPredictions.CCLE_ExprTCGA.csv",sep = ",",check.names = F,stringsAsFactors = F,header = T)
# risk <- read.table("tcgariskscore.txt",sep = "\t",check.names = F,stringsAsFactors = F,header = T,row.names = 1)
# CTRP2[,1] <- substr(CTRP2[,1], 1, 16)
# dup_rows <- CTRP2[duplicated(CTRP2[, 1]), 1] ##因为输入数据里行名有重复，这四步为找到重复行名
# dup_suffix <- ave(dup_rows, dup_rows, FUN = seq_along)
# CTRP2[duplicated(CTRP2[, 1]), 1] <- paste0(dup_rows, ".", dup_suffix)
# rownames(CTRP2) <- gsub("-", ".", CTRP2[,1])
# CTRP2 <- CTRP2[,-1]
# comgene <- intersect(rownames(CTRP2),rownames(risk))
# risk <- risk[comgene,]
# CTRP2 <- CTRP2[comgene,]
# RISK2 <- risk$RISK
# mydata=cbind(RISK2, CTRP2)
# 
# # 
# res2 <- rcorr(as.matrix(mydata)) ##可以看到这个list里包含三个，r为相关性分数，p为pvalue
# r <- res2$r
# p <- res2$P
# write.table(p,file="p矩阵.txt",sep="\t",quote=F,col.names=T)
# write.table(r,file="r矩阵.txt",sep="\t",quote=F,col.names=T)
# ##相关性热图
# corr <- as.matrix(r)
# pvalue <- as.matrix(p)
# # 检查相关性矩阵和P值矩阵的维度
# dim(corr)
# rownames(corr) <- paste0("R", 1:25)
# colnames(corr) <- paste0("c", 1:25)
# corr
# 
# write.table(corr, file="corrplottest.txt", sep="\t", col.names=T,row.names = T, quote=F)
# dim(pvalue)
# pvalue[is.na(pvalue)] <- 1

M<-read.table("corrplottest.txt", header = T, sep = "\t", quote = "", check.names = F)
M<-as.matrix(M)

addcol <- colorRampPalette(c("red", "green", "blue","brown"))
#绘图并保存
pdf("plot.pdf", width = 8, height = 8) 
corrplotpng<-corrplot(M, # 相关性矩阵
         method = "color", # 表示用颜色表示相关性大小
         col = addcol(100), 
         tl.col = "black", # 文本标签的颜色
         tl.cex = 0.8, # 文本标签的字符大小
         tl.srt = 90, #  文本标签的旋转角度
         tl.pos = "td", # 文本标签位置，td表示顶部和对角线 
         # p.mat = pvalue, #  P 值矩阵
         diag = T, # 是否显示对角线上的相关性值
         type = 'upper', # 只绘制上三角部分
         sig.level = c(0.05), # 设置显著性水平阈值，可设置多个
         pch.cex = 1,  # 显著性标记字符大小
         pch.col = 'grey20',  # 显著性标记字符颜色
         insig = 'label_sig',
         order = 'AOE', #设置一种排序方式
)
dev.off()

corrplot(M, # 相关性矩阵
         method = "color", # 表示用颜色表示相关性大小
         col = addcol(100),
          tl.col = "black", # 文本标签的颜色
          tl.cex = 0.8, # 文本标签的字符大小
          tl.srt = 90, #  文本标签的旋转角度
         tl.pos = "td", # 文本标签位置，td表示顶部和对角线
         # p.mat = pvalue, #  P 值矩阵
         diag = T, # 是否显示对角线上的相关性值
         type = 'upper', # 只绘制上三角部分
         sig.level = c(0.05), # 设置显著性水平阈值，可设置多个
         pch.cex = 1,  # 显著性标记字符大小
         pch.col = 'grey20',  # 显著性标记字符颜色
         insig = 'label_sig',
         order = 'AOE', #设置一种排序方式
)


# 添加一个保存图片使用
Cairo::CairoTIFF(file="corrplotpng.tiff", width=8, height=8,units="in",dpi=150)
corrplotpng<-corrplot(M, # 相关性矩阵
                      method = "color", # 表示用颜色表示相关性大小
                      col = addcol(100), 
                      tl.col = "black", # 文本标签的颜色
                      tl.cex = 0.8, # 文本标签的字符大小
                      tl.srt = 90, #  文本标签的旋转角度
                      tl.pos = "td", # 文本标签位置，td表示顶部和对角线 
                      p.mat = pvalue, #  P 值矩阵
                      diag = T, # 是否显示对角线上的相关性值
                      type = 'upper', # 只绘制上三角部分
                      sig.level = c(0.05), # 设置显著性水平阈值，可设置多个
                      pch.cex = 1,  # 显著性标记字符大小
                      pch.col = 'grey20',  # 显著性标记字符颜色
                      insig = 'label_sig',
                      order = 'AOE', #设置一种排序方式
)

dev.off()